<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <p>age:{{ age }}</p>
    <!-- 
      计算属性有缓存（用一个变量保存数据）：
        当第一次调用计算属性对应的函数时，vue内部会定义一个变量来保存这个计算属性的结果。
        当第二次调用计算属性对应的函数时，先判断计算属性依赖的数据是否发生变化，如果没有变化，那么就会读取第一次保存值。
    -->
    <p>是否成年：{{ isAdult }}</p>
    <p>是否成年：{{ isAdult }}</p>
    <p>是否成年：{{ isAdult }}</p>
    <p>是否成年：{{ isAdultFn() }}</p>
    <p>是否成年：{{ isAdultFn() }}</p>
    <p>是否成年：{{ isAdultFn() }}</p>
    <input type="button" value="长大" @click="upAge">
    <hr/>
    <p>fullName:{{fullName}}</p>
    <input type="button" value="修改名字" @click="changFullName">
  </div>

  <script src="./js/vue.js"></script>
  <script>
    let vm = new Vue({
      el: "#app",
      data: {
        age: 12,
        firstName: "y",
        lastName: "c"
      },
      computed: {
        isAdult: function () {
          console.log("computed");
          return this.age >= 18 ? "已成年" : "未成年";
        },
        // fullName:function(){
        //     return this.lastName+"·"+this.firstName;
        // },
        fullName: {
          get: function () {
            return this.lastName + "·" + this.firstName;
          },
          set: function (newVal) {
            console.log("set", newVal);
            this.firstName = newVal.split("·")[1];
            this.lastName = newVal.split("·")[0];
          }
        }
      },
      methods: {
        isAdultFn() {
          console.log("methods");
          return this.age >= 18 ? "已成年" : "未成年";
        },
        upAge() {
          this.age++;
        },
        changFullName() {
          this.fullName = "陈·明旭斯基";
        }
      }
    })

  </script>
</body>

</html>